<?php

abstract class HTML_Fluent_XHTML_Element_Base_HEAD extends HTML_Fluent_Element {

    /**
     * The name of this element
     *
     * @return string
     */
    public function getName() {
        return 'head';
    }

    protected $attributes = array(
        'dir' => null,
        'id' => null,
        'lang' => null,
        'profile' => null,
    );

    /**
     * Add a new element 'base' as a child
     *
     * @return HTML_Fluent_XHTML_Element_BASE
     */
    public function base() {
        return $this->newChildElement('base', func_get_args());
    }

    /**
     * Add a new element 'link' as a child
     *
     * @return HTML_Fluent_XHTML_Element_LINK
     */
    public function link() {
        return $this->newChildElement('link', func_get_args());
    }

    /**
     * Add a new element 'meta' as a child
     *
     * @return HTML_Fluent_XHTML_Element_META
     */
    public function meta() {
        return $this->newChildElement('meta', func_get_args());
    }

    /**
     * Add a new element 'object' as a child
     *
     * @return HTML_Fluent_XHTML_Element_OBJECT
     */
    public function object() {
        return $this->newChildElement('object', func_get_args());
    }

    /**
     * Add a new element 'script' as a child
     *
     * @return HTML_Fluent_XHTML_Element_SCRIPT
     */
    public function script() {
        return $this->newChildElement('script', func_get_args());
    }

    /**
     * Add a new element 'style' as a child
     *
     * @return HTML_Fluent_XHTML_Element_STYLE
     */
    public function style() {
        return $this->newChildElement('style', func_get_args());
    }

    /**
     * Add a new element 'title' as a child
     *
     * @return HTML_Fluent_XHTML_Element_TITLE
     */
    public function title() {
        return $this->newChildElement('title', func_get_args());
    }


    /**
     * Set the value of the 'dir' attribute.
     *
     * @param string|null $value
     * @return HTML_Fluent_XHTML_Element_HEAD
     */
    public function dir($value) {
        return $this->setAttribute('dir', $value);
    }

    /**
     * Set the value of the 'id' attribute.
     *
     * @param string|null $value
     * @return HTML_Fluent_XHTML_Element_HEAD
     */
    public function id($value) {
        return $this->setAttribute('id', $value);
    }

    /**
     * Set the value of the 'lang' attribute.
     *
     * @param string|null $value
     * @return HTML_Fluent_XHTML_Element_HEAD
     */
    public function lang($value) {
        return $this->setAttribute('lang', $value);
    }

    /**
     * Set the value of the 'profile' attribute.
     *
     * @param string|null $value
     * @return HTML_Fluent_XHTML_Element_HEAD
     */
    public function profile($value) {
        return $this->setAttribute('profile', $value);
    }

}
